home *** CD-ROM | disk | FTP | other *** search
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.Enumeration;
- import java.util.Vector;
- import netscape.ldap.LDAPAttribute;
- import netscape.ldap.LDAPAttributeSet;
- import netscape.ldap.LDAPConnection;
- import netscape.ldap.LDAPControl;
- import netscape.ldap.LDAPEntry;
- import netscape.ldap.LDAPException;
- import netscape.ldap.LDAPModification;
- import netscape.ldap.LDAPModificationSet;
- import netscape.ldap.LDAPSearchConstraints;
- import netscape.ldap.util.GetOpt;
- import netscape.ldap.util.LDIF;
- import netscape.ldap.util.LDIFAddContent;
- import netscape.ldap.util.LDIFAttributeContent;
- import netscape.ldap.util.LDIFContent;
- import netscape.ldap.util.LDIFDeleteContent;
- import netscape.ldap.util.LDIFModDNContent;
- import netscape.ldap.util.LDIFModifyContent;
- import netscape.ldap.util.LDIFRecord;
-
- public class LDAPModify extends LDAPTool {
- private static boolean m_continuous;
- private static boolean m_force;
- private static boolean m_add;
- private static boolean m_binaryFiles;
- private static String m_rejectsFile = null;
- private static LDIF m_ldif = null;
- private static String m_file = null;
-
- public static void main(String[] var0) {
- extractParameters(var0);
-
- try {
- if (!LDAPTool.m_justShow) {
- LDAPTool.m_client = new LDAPConnection();
- LDAPTool.m_client.connect(LDAPTool.m_ldaphost, LDAPTool.m_ldapport);
- }
- } catch (Exception var5) {
- System.err.println("Error: client connection failed!");
- System.exit(0);
- }
-
- try {
- if (!LDAPTool.m_justShow) {
- LDAPTool.m_client.authenticate(LDAPTool.m_version, LDAPTool.m_binddn, LDAPTool.m_passwd);
- }
- } catch (Exception var4) {
- System.err.println(((Throwable)var4).toString());
- System.exit(0);
- }
-
- try {
- if (m_file != null) {
- m_ldif = new LDIF(m_file);
- } else {
- m_ldif = new LDIF();
- }
- } catch (Exception var6) {
- if (m_file == null) {
- m_file = "stdin";
- }
-
- System.err.println("Failed to read LDIF file " + m_file + ", " + ((Throwable)var6).toString());
- System.exit(0);
- }
-
- try {
- doModify();
- } catch (Exception var3) {
- System.err.println(((Throwable)var3).toString());
- }
-
- try {
- if (!LDAPTool.m_justShow) {
- LDAPTool.m_client.disconnect();
- }
- } catch (Exception var2) {
- System.err.println(((Throwable)var2).toString());
- }
-
- System.exit(0);
- }
-
- private static void doUsage() {
- System.err.println("usage: LDAPModify [options]");
- System.err.println("options");
- System.err.println(" -h host LDAP server name or IP address");
- System.err.println(" -p port LDAP server TCP port number");
- System.err.println(" -V version LDAP protocol version number (default is 3)");
- System.err.println(" -D binddn bind dn");
- System.err.println(" -w password bind passwd (for simple authentication)");
- System.err.println(" -d level set LDAP debugging level to 'level'");
- System.err.println(" -R do not automatically follow referrals");
- System.err.println(" -O hop limit maximum number of referral hops to traverse");
- System.err.println(" -H display usage information");
- System.err.println(" -c continuous mode (do not stop on errors)");
- System.err.println(" -M manage references (treat them as regular entries)");
- System.err.println(" -f file read modifications from file instead of standard input");
- System.err.println(" -a add entries");
- System.err.println(" -b read values that start with / from files (for bin attrs)");
- System.err.println(" -n show what would be done but don't actually do it");
- System.err.println(" -v run in verbose mode");
- System.err.println(" -r replace existing values by default");
- System.err.println(" -e rejectfile save rejected entries in 'rejfile'");
- System.err.println(" -y proxy-DN DN to use for access control");
- }
-
- protected static void extractParameters(String[] var0) {
- GetOpt var1 = LDAPTool.extractParameters("abcHFre:f:", var0);
- if (var1.hasOption('H')) {
- doUsage();
- System.exit(0);
- }
-
- if (var1.hasOption('F')) {
- m_force = true;
- }
-
- if (var1.hasOption('a')) {
- m_add = true;
- }
-
- if (var1.hasOption('c')) {
- m_continuous = true;
- }
-
- if (var1.hasOption('r')) {
- m_add = false;
- }
-
- if (var1.hasOption('b')) {
- m_binaryFiles = true;
- }
-
- if (var1.hasOption('f')) {
- m_file = var1.getOptionParam('f');
- }
-
- if (var1.hasOption('e')) {
- m_rejectsFile = var1.getOptionParam('e');
- }
-
- }
-
- private static void doModify() throws IOException {
- PrintWriter var0 = null;
- LDAPSearchConstraints var1 = null;
- if (!LDAPTool.m_justShow) {
- var1 = (LDAPSearchConstraints)LDAPTool.m_client.getSearchConstraints().clone();
- Vector var2 = new Vector();
- if (LDAPTool.m_proxyControl != null) {
- var2.addElement(LDAPTool.m_proxyControl);
- }
-
- if (LDAPTool.m_ordinary) {
- var2.addElement(new LDAPControl("2.16.840.1.113730.3.4.2", true, (byte[])null));
- }
-
- if (var2.size() > 0) {
- LDAPControl[] var3 = new LDAPControl[var2.size()];
- var2.copyInto(var3);
- var1.setServerControls(var3);
- }
-
- var1.setReferrals(LDAPTool.m_referrals);
- if (LDAPTool.m_referrals) {
- LDAPTool.setDefaultReferralCredentials(var1);
- }
-
- var1.setHopLimit(LDAPTool.m_hopLimit);
- }
-
- for(LDIFRecord var16 = m_ldif.nextRecord(); var16 != null; var16 = m_ldif.nextRecord()) {
- LDIFContent var17 = var16.getContent();
- LDAPModification[] var4 = null;
- LDAPAttribute[] var5 = null;
- boolean var6 = false;
- boolean var7 = false;
- LDAPEntry var8 = null;
- if (var17 instanceof LDIFModifyContent) {
- var4 = ((LDIFModifyContent)var17).getModifications();
- } else if (var17 instanceof LDIFAddContent) {
- var5 = ((LDIFAddContent)var17).getAttributes();
- } else if (var17 instanceof LDIFAttributeContent) {
- if (m_add) {
- var5 = ((LDIFAttributeContent)var17).getAttributes();
- } else {
- LDAPAttribute[] var9 = ((LDIFAttributeContent)var17).getAttributes();
- var4 = new LDAPModification[var9.length];
-
- for(int var10 = 0; var10 < var9.length; ++var10) {
- var4[var10] = new LDAPModification(2, var9[var10]);
- }
- }
- } else if (var17 instanceof LDIFDeleteContent) {
- var6 = true;
- } else if (var17 instanceof LDIFModDNContent) {
- var7 = true;
- }
-
- if (var5 != null) {
- LDAPAttributeSet var18 = new LDAPAttributeSet();
-
- for(int var20 = 0; var20 < var5.length; ++var20) {
- var18.add(var5[var20]);
- }
-
- var8 = new LDAPEntry(var16.getDN(), var18);
- }
-
- boolean var19 = false;
- if (m_binaryFiles) {
- if (var4 != null) {
- for(int var22 = 0; var22 < var4.length; ++var22) {
- LDAPModification var24 = var4[var22];
- LDAPAttribute var29 = var4[var22].getAttribute();
- LDAPAttribute var32 = checkFiles(var29);
- if (var32 == null) {
- var19 = true;
- } else {
- var4[var22] = new LDAPModification(var24.getOp(), var32);
- }
- }
- } else if (var5 != null) {
- LDAPAttributeSet var21 = new LDAPAttributeSet();
-
- for(int var11 = 0; var11 < var5.length; ++var11) {
- LDAPAttribute var12 = var5[var11];
- LDAPAttribute var13 = checkFiles(var12);
- if (var13 == null) {
- var19 = true;
- break;
- }
-
- var21.add(var13);
- }
-
- if (!var19) {
- var8 = new LDAPEntry(var16.getDN(), var21);
- }
- }
- }
-
- int var23 = 0;
- if (!var19) {
- try {
- if (var4 != null) {
- LDAPModificationSet var27 = new LDAPModificationSet();
- System.out.println("\nmodifying entry " + var16.getDN());
-
- for(int var31 = 0; var31 < var4.length; ++var31) {
- if (LDAPTool.m_verbose) {
- System.out.println("\t" + var4[var31]);
- }
-
- var27.add(var4[var31].getOp(), var4[var31].getAttribute());
- }
-
- if (!LDAPTool.m_justShow) {
- LDAPTool.m_client.modify(var16.getDN(), var27, var1);
- }
- } else if (var8 == null) {
- if (var6) {
- System.out.println("\ndeleting entry " + var16.getDN());
- if (!LDAPTool.m_justShow) {
- LDAPTool.m_client.delete(var16.getDN(), var1);
- }
- } else if (var7) {
- System.out.println("\nmodifying RDN of entry " + var16.getDN() + " and/or moving it beneath a new parent");
- if (LDAPTool.m_verbose) {
- System.out.println("\t" + var17.toString());
- }
-
- if (!LDAPTool.m_justShow) {
- LDIFModDNContent var26 = (LDIFModDNContent)var17;
- LDAPTool.m_client.rename(var16.getDN(), var26.getRDN(), var26.getNewParent(), var26.getDeleteOldRDN(), var1);
- System.out.println("rename completed");
- }
- }
- } else {
- System.out.println("\nadding new entry " + var8.getDN());
- if (LDAPTool.m_verbose) {
- LDAPAttributeSet var25 = var8.getAttributeSet();
-
- for(int var30 = 0; var30 < var25.size(); ++var30) {
- System.out.println("\t" + var25.elementAt(var30));
- }
- }
-
- if (!LDAPTool.m_justShow) {
- LDAPTool.m_client.add(var8, var1);
- }
- }
- } catch (LDAPException var15) {
- System.err.println(var16.getDN() + ": " + var15.errorCodeToString());
- if (var15.getLDAPErrorMessage() != null) {
- System.err.println("additional info: " + var15.getLDAPErrorMessage());
- }
-
- if (!m_continuous) {
- System.exit(1);
- }
-
- var19 = true;
- var23 = var15.getLDAPResultCode();
- }
- }
-
- if (var19 && m_rejectsFile != null) {
- try {
- if (var0 == null) {
- var0 = new PrintWriter(new FileOutputStream(m_rejectsFile));
- }
- } catch (Exception var14) {
- }
-
- if (var0 != null) {
- var0.println("dn: " + var16.getDN() + " # Error: " + var23);
- if (var4 != null) {
- for(int var28 = 0; var28 < var4.length; ++var28) {
- var0.println(var4[var28].toString());
- }
- } else if (var8 != null) {
- var0.println("Add " + var8.toString());
- } else if (var6) {
- var0.println("Delete " + var16.getDN());
- } else if (var7) {
- var0.println("ModDN " + ((LDIFModDNContent)var17).toString());
- }
-
- var0.flush();
- }
- }
- }
-
- System.exit(0);
- }
-
- private static LDAPAttribute checkFiles(LDAPAttribute var0) {
- LDAPAttribute var1 = new LDAPAttribute(var0.getName());
- Enumeration var2 = var0.getStringValues();
- if (var2 == null) {
- System.err.println("Failed to do string conversion for " + var0.getName());
- } else {
- while(var2.hasMoreElements()) {
- String var3 = (String)var2.nextElement();
- if (var3 != null && var3.length() > 1) {
- try {
- File var4 = new File(var3);
- FileInputStream var5 = new FileInputStream(var4);
- byte[] var6 = new byte[(int)var4.length()];
- var5.read(var6, 0, (int)var4.length());
- var1.addValue(var6);
- } catch (FileNotFoundException var7) {
- var1.addValue(var3);
- } catch (IOException var8) {
- System.err.println("Unable to read value from file " + var3);
- if (!m_continuous) {
- System.exit(1);
- }
-
- var1 = null;
- }
- } else {
- var1.addValue(var3);
- }
- }
- }
-
- return var1;
- }
- }
-